Die Backus-Naur-Form (BNF) ist eine formale Notation zur Definition der Syntax von formalen Sprachen, wie z.B. Programmiersprachen oder Datenformate. Sie wird verwendet, um die grammatikalischen Regeln einer Sprache präzise und eindeutig zu beschreiben.
Grundlegende Elemente der BNF:
Nichtterminale: Symbole, die durch andere Symbole (terminale oder nichtterminale) ersetzt werden können. Sie repräsentieren syntaktische Kategorien oder Konzepte (z.B. Satz
, Ausdruck
, Variable
). Nichtterminale werden oft in spitzen Klammern < >
eingeschlossen, z.B. <Ausdruck>
.
Terminale: Symbole, die die eigentlichen Zeichen der Sprache darstellen und nicht weiter ersetzt werden können (z.B. Schlüsselwörter, Operatoren, Literale). Sie erscheinen so, wie sie in der Sprache vorkommen (z.B. if
, +
, 123
).
Produktionsregeln: Regeln, die definieren, wie ein Nichtterminal durch eine Sequenz von Terminalen und/oder Nichtterminalen ersetzt werden kann. Eine Produktionsregel hat die Form Nichtterminal ::= Sequenz von Symbolen
. Das Symbol ::=
bedeutet "ist definiert als".
Alternative: Der Operator |
(oder) ermöglicht es, mehrere alternative Definitionen für ein Nichtterminal anzugeben. Beispiel: <Zahl> ::= <Ziffer> | <Zahl> <Ziffer>
bedeutet, dass eine Zahl entweder eine einzelne Ziffer oder eine Zahl gefolgt von einer Ziffer sein kann.
Wiederholung (Kleene-Stern): Obwohl die BNF selbst keine direkte Notation für die Wiederholung hat, kann diese durch rekursive Definitionen erreicht werden. Erweiterte BNF (EBNF) und deren Varianten (z.B. ABNF) bieten explizite Operatoren für Wiederholung (z.B. *
, +
, ?
).
Beispiel:
Hier ist ein einfaches Beispiel einer BNF-Grammatik für einen arithmetischen Ausdruck:
<Ausdruck> ::= <Term> | <Ausdruck> + <Term> | <Ausdruck> - <Term>
<Term> ::= <Faktor> | <Term> * <Faktor> | <Term> / <Faktor>
<Faktor> ::= <Zahl> | ( <Ausdruck> )
<Zahl> ::= <Ziffer> | <Zahl> <Ziffer>
<Ziffer> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
EBNF (Erweiterte Backus-Naur-Form):
EBNF ist eine Erweiterung der BNF, die zusätzliche Notationen bietet, um die Grammatik kompakter und lesbarer zu gestalten. Sie beinhaltet typischerweise Operatoren für:
[ ... ]
(das Element innerhalb der Klammern kann optional vorkommen).{ ... }
(das Element innerhalb der Klammern kann null oder mehr Mal vorkommen).(...)+
(das Element innerhalb der Klammern kann ein oder mehr Mal vorkommen).Anwendungen:
Die BNF und ihre Varianten werden in vielen Bereichen eingesetzt, darunter:
Wichtige verwandte Konzepte:
Ne Demek sitesindeki bilgiler kullanıcılar vasıtasıyla veya otomatik oluşturulmuştur. Buradaki bilgilerin doğru olduğu garanti edilmez. Düzeltilmesi gereken bilgi olduğunu düşünüyorsanız bizimle iletişime geçiniz. Her türlü görüş, destek ve önerileriniz için iletisim@nedemek.page